import request from '@/utils/request'

/**
 * 新增订单
 * 接口：POST /api/admin/order/add
 * @param {Object} data - 订单信息
 * @param {string} data.nickname 客户昵称（必填）
 * @param {string} data.phone 客户手机号（必填）
 * @param {string} data.address 客户地址（必填）
 * @param {number} data.goods_id 商品ID（必填）
 * @param {number} data.goods_count 商品数量（必填）
 * @param {number} data.order_price 订单金额（必填）
 * @param {number} data.real_price 实付金额（必填）
 * @param {string} [data.remark] 备注
 * @param {string} [data.payment_prove] 支付凭证
 * @returns {Promise<Object>}
 * 返回示例：
 * {
 *   "code": 200,
 *   "message": "添加成功",
 *   "data": { "id": 1, "order_no": "ORD20231201001", ... }
 * }
 */
export function addOrder(data) {
  return request({
    url: '/api/admin/order/add',
    method: 'post',
    data,
  })
}

/**
 * 派单
 * 接口：POST /api/admin/order/distribute
 * 返回示例：
 * {
 *   "code": 200,
 *   "message": "派单成功",
 *   "data": { "updated": 2 }
 * }
 */
export function distributeOrder(data) {
  return request({
    url: '/api/admin/order/distribute',
    method: 'post',
    data,
  })
}

/**
 * 编辑订单
 * 接口：POST /api/admin/order/edit
 * @param {Object} data - 订单信息
 * @param {number} data.id 订单ID（必填）
 * @param {string} data.nickname 客户昵称（必填）
 * @param {string} data.phone 客户手机号（必填）
 * @param {string} data.address 客户地址（必填）
 * @returns {Promise<Object>}
 * 返回示例：
 * {
 *   "code": 200,
 *   "message": "编辑成功",
 *   "data": { "id": 1, "nickname": "张三", ... }
 * }
 */
export function editOrder(data) {
  return request({
    url: '/api/admin/order/edit',
    method: 'post',
    headers: {
      'Content-Type': 'multipart/form-data',
    },
    data,
  })
}

/**
 * 获取订单详情
 * 接口：GET /api/admin/order/info
 * @param {number} id 订单ID（必填）
 * @returns {Promise<Object>}
 * 返回示例：
 * {
 *   "code": 200,
 *   "message": "获取成功",
 *   "data": {
 *     "id": 1,
 *     "order_no": "ORD20231201001",
 *     "nickname": "张三",
 *     "phone": "13800138000",
 *     "address": "北京市朝阳区xxx",
 *     "goods_id": 1,
 *     "goods_count": 2,
 *     "order_price": 100,
 *     "real_price": 80,
 *     "status": 1,
 *     "worker_id": 1,
 *     "remark": "备注信息",
 *     "payment_prove": "支付凭证URL",
 *     "created_at": "2023-12-01 10:00:00"
 *   }
 * }
 */
export function getOrderInfo(id) {
  return request({
    url: '/api/admin/order/info',
    method: 'get',
    params: { id },
  })
}

/**
 * 获取订单列表
 * 接口：GET /api/admin/order/lists
 * 返回示例：
 * {
 */
export function getOrderList(params) {
  return request({
    url: '/api/admin/order/lists',
    method: 'get',
    params,
  })
}

export function exportOrderList(params) {
  return request({
    url: '/api/admin/order/lists',
    method: 'get',
    params,
    responseType: 'blob', // 设置响应类型为二进制数据
    headers: {
      Accept:
        'application/octet-stream, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel',
      'Content-Type': 'application/json',
    },
    timeout: 30000, // 增加超时时间，因为文件下载可能需要更长时间
  })
}

/**
 * 批量完成订单
 * 接口：POST /api/admin/order/finish
 * @param {Object} data - 完成订单信息
 * @param {string} data.id 订单ID，逗号分隔（必填）
 * @returns {Promise<Object>}
 * 返回示例：
 * {
 *   "code": 200,
 *   "message": "批量完成成功",
 *   "data": { "updated": 2 }
 * }
 */
export function finishOrder(data) {
  return request({
    url: '/api/admin/order/finish',
    method: 'post',
    data,
  })
}

/**
 * 删除订单
 * 接口：DELETE /api/admin/order/del
 * @param {number} id 订单ID（必填）
 * @returns {Promise<Object>}
 * 返回示例：
 * {
 *   "code": 200,
 *   "message": "删除成功",
 *   "data": null
 * }
 */
export function deleteOrder(id) {
  return request({
    url: '/api/admin/order/del',
    method: 'delete',
    data: { id },
  })
}

/**
 * 批量删除订单
 * 接口：DELETE /api/admin/order/batch-del
 * @param {Object} data - 删除订单信息
 * @param {string} data.id 订单ID，逗号分隔（必填）
 * @returns {Promise<Object>}
 * 返回示例：
 * {
 *   "code": 200,
 *   "message": "批量删除成功",
 *   "data": { "deleted": 2 }
 * }
 */
export function batchDeleteOrder(data) {
  return request({
    url: '/api/admin/order/batch-del',
    method: 'delete',
    data,
  })
}

// 查询派单师傅
export function getWorkList(params) {
  return request({
    url: '/api/admin/work/lists',
    method: 'get',
    params,
  })
}

// getChannelList
export function getChannelList(params) {
  return request({
    url: '/api/admin/channel/lists',
    method: 'get',
    params,
  })
}
// /api/admin/order/distribute
